
#include <stdio.h>
#include <string.h>

// 返回 char* 是为了实现链式表达
// 典型的造轮子
char *myStrcat(char *dest, char *src)
{
    char* d = dest;
    while (*dest) dest++;
    // 先复制，后判断，再 ++
    while (*dest++ = *src++);
    return d;
}

// 被链接的字符串，必须要有足够的空间
int main()
{
    char firstName[30] = "Jim";
//    char firstName[] = "Jim";
    char middleName[30] = "-";
    char lastName[30] = "Green";
//    printf("%s%s\n",firstName,lastName);

//    char *p,*q;
//    p = firstName;
//    q = lastName;
//    while (*p) {
//        p++;
//    }

//    while (1) {
    // 先复制，后判断，再 ++
////        *p = *q;
////        if(*p == '\0')
//        if((*p = *q) == '\0')
//            break;
//        p++;
//        q++;
//    }

//    while (*p = *q) {
    // 先复制，后判断，再 ++
//        p++;
//        q++;
//    }

    // 先复制，后判断，再 ++
//    while (*p++ = *q++);

//    strcat(strcat(firstName,middleName),lastName);
    myStrcat(myStrcat(firstName,middleName),lastName);
    printf("%s\n",firstName);
    return 0;
}
